<?php

namespace Sisesporte\Service;

use Doctrine\ORM\EntityManager;
use Sisesporte\Utils\Utils,
    Sisesporte\Utils\Email;

class AuthService extends AbstractService
{

    protected $entity;

    public function __construct (EntityManager $em)
    {
        parent::__construct($em);
        $this->entity = "Sisesporte\Entity\Autenticacao";
    }

    /**
     * Esqueci a senha.
     * @param array $data
     * @return boolean
     */
    public function esqueciSenha (array $data)
    {

        if (!empty($data[dtNascimento])) {
            list($day, $month, $year) = explode("/", $data[dtNascimento]);
            $data[dtNascimento] = new \DateTime(date($year . "-" . $month . "-" . $day));
        }

        if (!empty($data[noEmail])) {
            $data[noEmail] = strtoupper($data[noEmail]);
        }

        $entityPessoa = $this->em->getRepository("Sisesporte\Entity\Pessoa")->findOneBy($data);

        if ($entityPessoa) {
            $util = new Utils();
            $senha = $util->gerarSenha(5, TRUE, TRUE);

            $entity = $this->em->getReference("Sisesporte\Entity\Autenticacao", $entityPessoa->getSqPessoa());
            
            $matricula = $entity->getNoLogin();
            $noPessoa = $entityPessoa->getNoPessoa();

            $entity->setNoSenha(md5($senha))
                    ->setInPrimeiroAcesso(true);

            $this->em->persist($entity);

            $this->em->flush();

            if ($entity) {
                $email = new Email();
                $subject = "SisEsporte | Sua senha foi resetada na Sesp/DF";
                $html = "<p>
                            Prezado(a) Aluno(a) <strong>{$noPessoa}</strong>,<br />
                            Sua senha foi reiniciada através da funcionalidade Esqueci minha senha, para acessar o sistema
                            utilize o link e informações de acesso abaixo: <a href='http://test.sisesporte.secesportes.confidereit.com/'>http://www.escola.esporte.df.gov.br/admin/</a><br />
                            <strong>Matrícula: </strong>{$matricula}<br />
                            <strong>Senha: </strong>{$senha}<br /><br />
                            Atenciosamente,<br />
                            <strong>Secretaria de Esportes</strong>                            
                        </p>";

                $result = $email->sendEmail(
                        array($entityPessoa->getNoEmail() => $entityPessoa->getNoPessoa()), $subject, $html
                );
                
                return ($result) ? true : false;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

    public function verificaEmail ($noEmail)
    {
        $params = array('noEmail' => $noEmail);
        $entity = $this->em->getRepository("Sisesporte\Entity\Pessoa")->findBy($params);

        return $entity;
    }

}
